Distributed monitoring and control of network components

ABSTRACT

A distributed monitoring system and a computer-implemented method monitors and controls locally situated network components through a monitoring and control device or processor querying the network component operating parameters and sending control commands for controlling the parameters queried. Reports of the status of the monitored network components are periodically generated from throughout the network and sent to a remotely located status viewing station configured to generate a monitoring interface and display the operational status of the network based on the status reports. If necessary, the status viewing station automatically transmits instructions, or a user enters instructions into the status viewing station, for instructing action be taken by the monitoring and control device or processor, e.g., to adjust one or more operating parameters queried. The distributed monitoring system may be particularly useful in monitoring and managing the health of a digital signage network.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/674,618 filed Nov. 12, 2012, issued as U.S. Pat. No. 9,049,130 onJun. 2, 2015, which claims priority to U.S. Patent Application No.61/558,830 filed Nov. 11, 2011, the contents of all of which are herebyincorporated by reference.

FIELD OF THE INVENTION

Systems and methods provide distributed monitoring and control ofnetwork components including display devices. More specifically, thenetwork components may be locally monitored and controlled utilizingmonitoring and control devices of the distributed monitoring systemsprovided herein.

BACKGROUND

Typically, monitoring systems implemented by a network providesequential monitoring and status updates from numerous remotely locatednetwork components. As shown in FIG. 1, sequential monitoring system 100uses a central server 110 to query remotely located network devices 120,130, 140 in sequence on a periodic basis. During sequential monitoring,the central server 110 connects directly to each network device within aremote location via WAN, and then asks each device to report back inturn (i.e., the central IP approach). It takes approximately 4 to 5seconds for each network component to report back to the central server110 on its status. This means that for a 3000-device network it willtake approximately 3.5 hours for every device to be connected to and tohave reported back to the central server 110. See FIG. 2. If a devicereports that it is operating correctly but subsequently malfunctions,the location housing the remote device will not be notified until thenext time the server contacts the location (i.e., another 3.5 hours).The result is that the system provides information that is hopelesslyout of date. Moreover, when a command or update is to be implementedacross the entire network, the central server connects to each networkcomponent individually and in sequence (i.e., the process would take 3.5hours). In addition, sequential monitoring systems generally do notprovide automatic alerts when there is a problem. This means that it isnecessary for a user to laboriously and manually sift through reports tofind problems. Furthermore, as the number of monitored networkcomponents increases, the amount of time it takes the central server tosend queries and receive updates increases. Thus, in networks with alarge number of monitored network components, the central serverperforming sequential monitoring is an inefficient means for statusmonitoring because validating network health takes too long, data is notprovided in real time, commands take too long to execute and automaticalerts are not provided upon identifying a problem. Monitoring issequential in many network systems, including those that deliver contentto POS displays, and disruption can cause a lost sale opportunity andpossible loss of advertiser revenue.

SUMMARY

Implementations address the above problems by providing distributedmonitoring systems and methods that utilize locally situated monitoringand control devices to monitor other locally situated network componentssuch as display devices. The monitoring and control devices send statusrequests to, and receive status updates from, the network devices andprovide status reports to a communicatively coupled, but remotelylocated, status viewing station. This enables the distributed monitoringsystems to utilize the monitoring and control devices to connect tomultiple network devices (e.g., monitors and players) and receive statusreports from the devices as well as from the monitoring and controldevice itself. The monitoring and control devices each generate a singlereport for the status of the queried components and send the report tothe status viewing station where a group of reports from throughout thenetwork are assembled and displayed for user review. If necessary, thestatus viewing station automatically transmits instructions, or the userenters instructions into the status viewing station, for instructing themonitoring and control devices to take action, e.g., to adjust one ormore operating parameters queried. The status reports from throughoutthe network are received by the status viewing station approximatelyevery five minutes and the reports provide automatic alerts of problemsassociated with the network components thereby allowing problemsthroughout the network to be addressed.

According to certain aspects, a distributed monitoring system formonitoring and controlling network components includes display devicesconfigured to display content, monitoring and control devices (e.g.,with a memory and a processor) communicatively coupled to the displaydevices, and a status viewing station (e.g., with a memory, processorand a display monitor) remotely located from the monitoring and controldevices and the display devices. The monitoring and control devicesquery one or more parameters of the plurality of display devices andsend control commands to the display devices for controlling theparameters queried. The status viewing station receives status reportsgenerated by the monitoring and control devices that include theoperational status for the one or more parameters queried. In response,the status viewing station generates a monitoring interface thatdisplays the operational status of the network based on the receivedstatus reports.

In other aspects, a computer-implemented method for monitoring andcontrolling components in a network includes a plurality of monitoringprocessors, where each monitoring processor is communicatively coupledto a plurality of network components. The monitoring processors are eachconfigured to: monitor the plurality of network components by queryingone or more operating parameters of the plurality of network components;detect operating parameters of the plurality of network components basedon receiving operating parameter updates from the plurality of networkcomponents; assemble a report identifying an operational status for eachof the plurality of monitored network components based on the detectedoperating parameters; and transmit the report. A status viewingprocessor remotely located from the plurality of monitoring processors,is configured to: receive a plurality of the transmitted reports fromthe plurality of monitoring processors in the network; identifyoperating errors for one or more of the monitored network components;and transmit instructions for addressing the operating error to theremotely located monitoring processor having transmitted the report withthe operational status for the network component with the operatingerror.

In further aspects, a digital signage network configured with adistributed monitoring system for monitoring and controlling networkcomponents includes a plurality of local monitoring and controlenvironments. The monitoring and control environments each include acontent player configured to transmit content to display devices withinthe local monitoring and control environment and a monitoring andcontrol device. The monitoring and control device is configured to:monitor an operational status of the content player and display devicesby querying the content player and display devices; detect operatingparameters of the content player and display devices based on receivingoperating parameter updates therefrom; assemble a report identifying anoperational status for the local monitoring and control environmentbased on the detected operating parameters; and transmit the operationalstatus report. A status viewing station remotely located from the localmonitoring and control environments includes a processor configured to:receive the transmitted operational status reports from each localmonitoring and control environment; and generate a display listing anoperational status of each local monitoring and control environmentbased on the plurality of reports received.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a diagram of a sequential monitoring system accordingto the prior art.

FIG. 2 illustrates a schematic diagram of how a sequential monitoringsystem generates display screen status reports according to the priorart.

FIGS. 3A and 3B illustrate diagrams of a distributed monitoring systemaccording to certain implementations.

FIG. 4 illustrates a flowchart of a distributed monitoring method thatmay be implemented by the distributed monitoring systems of FIGS. 3A and3B.

FIG. 5 is a screen shot of a login page for viewing a display interfaceof the status viewing stations according to certain implementations.

FIG. 6 is a screen shot of a site status tab that displays the status ofvarious monitored parameters including the status of the monitoring andcontrol devices and the display devices according to certainimplementations.

FIG. 7 is a screen shot of a channel status tab that enablesidentification of problems associated with a channel in a given locationaccording to certain implementations.

FIG. 8 is a screen shot of an update status tab that enables a user toview the status of updates across the network of monitored componentsaccording to certain implementations.

FIG. 9 is a screen shot of a schedule information tab that may enableusers to view playlists scheduled to play on the display devices acrossthe network according to certain implementations.

FIG. 10 is a screen shot of a general information tab that may enablethe user to perform a network wide search of specific criteria byentering the search criteria in the filter field according to certainimplementations.

DETAILED DESCRIPTION

Distributed monitoring systems and methods utilize one or more locallysituated monitoring and control devices to monitor and control otherlocally situated network components such as display devices. Themonitoring and control devices send status requests to, and receivestatus updates from, the monitored local network components. Based onthe status updates, the monitoring and control devices may send commandsto the one or more network components to take some action, such asadjusting the settings of a display device, and the monitoring andcontrol device may confirm with the network component that the actionwas taken. A monitoring and control device generates reports based onthe status updates and the actions taken, and provides the reports to acommunicatively coupled, remotely located status viewing station. Basedon the reports, a status viewing station may command the monitoring andcontrol device to take some action, such as commanding the monitoringand control device to instruct the display devices to reboot. Thedistributed monitoring model enables the status viewing station toautomatically receive update reports from the monitoring and controldevices across the network, which is in contrast to the sequential modelwhere the central server is required to poll the network components forstatus updates and wait for a response. The distributed monitoringsystem may be particularly useful in monitoring and managing the healthof a digital signage network.

In some implementations, a distributed monitoring system for monitoringnetwork components may include display devices, monitoring and controldevices (e.g., computers for transmitting content to the display devicesand for implementing monitoring software) for monitoring the displaydevices and other network components, and a remotely located statusviewing station for receiving monitoring (e.g., status) updates. FIGS.3A and 3B illustrate diagrams of distributed monitoring systems 300,310, respectively, according to certain implementations. In a particularexample, the display devices may be located at end caps within a retailstore and may serve as digital signage displays, while the monitoringand control device may be located in an office within the retail store.In this example, the status viewing station may be in a separatelocation from the retail store, such as in a corporate office. Inanother example, the display devices may be located within a bank lobbyand serve as digital signage displays for banking customers and themonitoring and control device may be located in a technician or amanager's office. In this example, the status viewing station may be ina separate location, such as in a third party-controlled office. It maybe appreciated that the display devices and monitoring and controldevices may be installed in other businesses or dwellings in addition toretail and bank settings.

With reference to the distributed monitoring systems 300, 305 of FIGS.3A and 3B, respectively, the display devices 310 may include displayscreens and hardware and firmware for causing images to be displayed onthe display screens. The display devices 310 may be one or more largeformat digital screens, televisions, computer monitors, touch screens,projectors or other display devices configured for displaying contentfor user viewing. The display devices 310 may include embedded firmwarefor configuration of the devices, as well as an onboard PC (including aprocessor and memory).

In some implementations, such as when a display device includes anonboard PC, the display device may be programmed to perform thefunctions of the monitoring and control device 320 described below. Forexample, the display device may perform monitoring functions, storecontent and execute instructions for displaying content on the displayscreen. In some implementations, the display device may be composed ofone or more display screens communicatively coupled to a local player(e.g., video players, set top boxes, external computer processors andmemory or other digital devices) configured to transmit content (e.g.,videos and images) to the display device. The display devices 310 may beprogrammed to communicate with the local monitoring and control device320 or another local or on-site computer system, described below.

As shown in FIGS. 3A and 3B, a monitoring and control device 320associated with the display devices 310 may be a local or an on-sitecomputer (e.g., a computer with a memory, processor and programmed withmonitoring software for executing queries and sending query results to aremote location and may be configured to transmit content to the displaydevices 310) that is physically present at the location the displaydevices 310 are installed (e.g., within a store, a business or adwelling). The monitoring and control device 320 utilizes a processor toexecute monitoring software instructions, which for example, query thelocal display devices to determine the functional status of variousdisplay device parameters. For example, the monitoring and controldevice 320 obtains the information on hardware and firmware operationalparameters within the display devices 310 by querying the displaydevice. The monitoring software may additionally perform software checkson other software or programming to see if software and programming arerunning correctly on the monitoring and control device 320, the displaydevices 310 or other locally situated network components. The monitoringand control device 320 may take action in response to receiving queryupdates from the monitored network components, which may, for example,include fixing a problem associated with the network component that isrepairable by remote servicing. The monitoring and control device 320may generate and send a report to the remote status viewing station 340,described below. In addition to performing monitoring functions, themonitoring and control devices 320 may be programmed as a content playerand may include software for archiving content therein and fortransmitting content to the local display devices 310. In alternativeimplementations, the player may be integrated with one or more of thelocal display devices 310 as described above or may be a stand-alonecomponent communicatively coupled to the monitoring and control device320 and to one or more display devices 310.

The display devices 310, monitoring and control devices 320, and othermonitored network components form a local monitoring and controlenvironment 330 (e.g., an environment that is separate from the centralserver or status viewing station), and each of the components may becommunicatively coupled via connections including, but not limited to,wired connections (e.g., RS-232 port connections, LAN cabling), wirelessconnections (e.g., Ethernet and switch for LAN and WAN, Wi-Fi) or both.For example, as shown in FIG. 3A, display devices 310 with an inbuiltRS-232 port may be connected to an RS-232 port interface. The displaydevices 310 may then be connected via a cable to the monitoring andcontrol device 320 that also includes an RS-232 port. When usingRS-232-based connections, an interface of the monitoring and controldevice 320 may be a DB-25 (25-pin) serial port or a DE-9 or (9-pin)serial interface, for example, and the display devices 310 maycommunicate over a 25-pin or 9-pin serial interface.

The RS-232 connection may be via a daisy chain or star method. The daisychain method involves the onsite monitoring and control device 320connecting to one of the display devices 310 by RS-232. The firstdisplay device is then connected to another display device and this isconnected to a further display device, and so on, forming a digitaldaisy chain within the branch. Thus, only one display device isphysically connected to the monitoring and control device 320, but themonitoring and control device 320 is communicatively coupled with all ofthe display devices 310 in the daisy chain. In the star method, themonitoring and control device 320 may be connected to all of the displaydevices 310 by splitting and in some cases splitting and boosting theRS-232 signal down multiple cables. This means that display devices 310may be contacted even if there are other display device failures onsite.

In some implementations, RJ-45 “Ethernet” style jacks (in other words aport that accepts an Ethernet style connector) may be provided in thedisplay device. This may enable the display devices to be managed by themonitoring and control devices over TCP/IP (IP) as shown in FIG. 3B,rather than RS-232. In this case, the IP allows the display devices toconnect to an Ethernet switch, thereby eliminating the need for a directphysical connection to the monitoring and control device 320.Accordingly, the local monitoring and control environment may beconfigured to send status requests, receive status updates and sendcommands for controlling the display devices utilizing both wide areanetwork (WAN) and local area network (LAN).

A status viewing station 340 is located remotely from the displaydevices 310 and the monitoring and control devices 320 within thevarious local monitoring and control environment 330 in the network, andmay be a device such as a PC or a set top box configured as a centralserver, which monitors the various network components of the localmonitoring and control environments 330. The status viewing station 340may be communicatively coupled to the monitoring and control devices 320though a network connection, Internet connection or other communicationmeans for sending data to and receiving data from remote locations. Thestatus viewing station 340 may receive a file of status data generatedby the remote monitoring and control devices 320, or the monitoring andcontrol devices 320 may report the status data directly to the statusviewing station 340 using web services or similar IP-basedcommunications. The status viewing station 340 provides a visual displayof the status of the network components within the network, and thenetwork components may span across a number of remote locations. When anetwork component problem is identified, the visual display of thestatus viewing station 340 displays an error indicator, and details ofthe problem may be reviewed by a user by selecting the error indicator,described below.

In operation of the distributed monitoring systems, 300, 305, thedisplay device firmware may use hexadecimal (HEX) commands in order todirect the display device to perform a certain action or to send backsome information. HEX is a known number system used in computerapplications to communicate with electronic hardware. HEX commands maycorrespond to certain functions such as powering on/off, enteringnumbers, selecting enter, increasing or decreasing a channel or volume,menu selections, cursor movements (e.g., up, down, left, right, previousand next). The number of HEX enabled commands and the code sequence mayvary from vendor to vendor, but each display device using HEX commandsmay be utilized in the distributed monitoring systems 300, 305 to enablethe monitoring and control device 320 to monitor and control the displaydevice parameters. For example, the monitoring and control device may beprogrammed with HEX commands for one or more display device models andmay communicate with the display device utilizing the HEX-based codesover an RS-232 interface or over TCP/IP (IP). Based on the informationreceived from the display device in response to sending one or more HEXcodes, the monitoring and control device 320 may take some action,described below. While communications between the components of thelocal monitoring and control environment are described as through HEXcommands, it will be appreciated that communications may be based onother code types, which may be in addition or as an alternative to HEXcodes.

FIG. 4 illustrates a flowchart of an example distributed monitoringmethod 400 that may be implemented by one or both of the distributedmonitoring systems 300, 305 of FIGS. 3A and 3B. In FIG. 4, themonitoring and control device 320 executes a screen monitoring processto monitor display device (e.g., screen) status of the display devices310 by pinging each display device to validate an on/off state(operation 410), for example, utilizing a HEX inquiry. If the displaydevice is off (operation 415), the monitoring and control device sends aHEX command to turn the display device on (operation 420). Once themonitoring and control device verifies the display device is on(operation 425), the monitoring and control device may request that thedisplay device verify the input source to which the display device isset (operation 430). If the monitoring and control device determines theinput source is incorrect (operation 435), the monitoring and controldevice sends a command to the display device to reset the display deviceto the correct input (operation 440). Once the monitoring and controldevice verifies the input source is determined to be correct (operation445), the monitoring and control device polls other parametersassociated with the display device (operation 450), and where theparameters are operating incorrectly (operation 455), sends commands toadjust the parameters (operation 460). Upon confirming the parametersare operating correctly (operation 465), the polling process ends(operation 470). For example, the display device parameters monitored bythe monitoring and control device 320 may include, but are not limitedto, on/off state; lamp state error/no error; temperature error/no error;display device settings (e.g., volume, mute, brightness, contrast, imagesettings, color settings, language display); loss of signal error/noerror; actual device temperature; fan state error/no error; input sourceidentification (e.g., HDMI/PC/Composite) and status error/no error;display device serial number and display device firmware number. Inadditional implementations, the monitoring and control device 320 maypoll the stored content transmitted to or by the display device todetermine whether the stored content is current. In additionalimplementations, the monitoring and control device 320 may poll thestatus of the software used to deliver the stored content to determinewhether the correct version of the software is installed on the networkcomponent. Thus, for example, when the local player is provided as astand-alone player with content and software stored therein, themonitoring and control device 320 polls the player content or softwareto determine the player is operating correctly.

In addition to monitoring parameters, the monitoring and control device320 sends commands to the display devices 310 or other networkcomponents for taking action, such as adjusting settings or operatingparameters to maintain the health of the distributed monitoring system300, 305. For example, for parameters that are incorrect or that falloutside of operational parameters (e.g., in operations 455 and 460), themonitoring and control device 320 may automatically send HEX commands tomake corrections or to adjust the display device parameters toacceptable operating parameters. Commands that may be sent by themonitoring and control device to perform pre-defined functions mayinclude, but are not limited to, turning the display device on or off;switching the display device to an idle mode; setting the input for thedisplay device; adjusting the display device settings;activating/deactivating the fan; and rebooting the display device. Inresponse to performing the functions, the display device may send aconfirmation to the monitoring and control device 320 that the functionwas executed. In some implementations, in response to receiving a statusupdate indicating programming or software is outdated, the monitoringand control device 320 may retrieve and install updated programming orsoftware in the monitoring and control device 320, the display devices310 or other network components. Upon receiving the update, the networkcomponents may send a confirmation to the monitoring and control devicethat the update is complete. Therefore, in addition to the ability tomonitor and diagnose the health status of the display devices, thedistributed monitoring system 300, 305 may utilize the monitoring andcontrol device 320 to proactively adjust display device settings andupdate network components and receive confirmation of the adjustments orupdates to enable the monitored network components to operate withinhealthy parameters.

Upon verifying parameters are correct or upon adjusting the parametersand receiving confirmation of the adjustment, the monitoring and controldevice 320 may generate status reports based on data received from thedisplay devices 310 or other network components. For example, the datareceived from the network components may be in response to themonitoring and control device 320 sending status queries for one or moreof the aforementioned parameters or to verify one or more actions weretaken. In addition or alternatively, the data transmitted by the networkcomponents to the monitoring and control device 320 may be scheduled.The data forming the report may include, but is not limited to, siteidentifiers (e.g., a branch name or identification number), the statusof the site, network device identifiers (e.g., screen serial number andscreen firmware number) for devices within the site, the status of thedevices, whether an update or a fix on a network device was attemptedand was successful or unsuccessful. The generated report may be sent bythe monitoring and control device 320 to the status viewing station 340.

In some implementations, the monitoring and control device may beprogrammed to send codes to the display device in order to command thedisplay device to perform an initial setup according to predefinedparameters stored in the monitoring and control device. For example,utilizing the monitoring and control device, the display device may beturned on and the display device settings may be adjusted to predefinedparameters, the channel may be set to predefined channel, software maybe installed on the display device, and a testing protocol may beperformed to verify display device setup is complete. The monitoring andcontrol device may generate an initial setup report for the site and thenetwork components within the site and may send the report to the statusviewing station 340.

The status viewing station 340 may receive status reports from eachmonitoring and control device 320 in the network on a periodic basis,such as every five minutes. When the monitoring and control device 320verifies the monitored network components are operating correctly, themonitoring and control device 320 may send information to the remotestatus viewing station 340 confirming the correct operation. When themonitoring and control device 320 determines one or more of the displaydevices 310 or the software is not operating correctly, and attempts tocorrect the problem utilizing the monitoring and control device areunsuccessful, the monitoring and control device 320 may send a report tothe remote status viewing station 340 with information identifying theproblem and a unique address or identifier associated with the affectednetwork component. In cases where the problem may be resolvedelectronically, the status viewing station 340 may send commands to themonitoring and control device 320 instructing the monitoring and controldevice 320 to fix the problem. In one example, the status viewingstation 340 may send the monitoring and control device 320 an updatedcontent file that the monitoring and control device 320 utilizes totransmit content to the affected display device or devices or to updatesoftware within a network component. Where the network component problemcannot be solved by instructing the monitoring and control device 320 toperform electronic operations, the status viewing station 340 may send anotification or alert to the monitoring and control device 320 or to anyother device (e.g., a local help desk work station) that the networkcomponent requires attention.

In some implementations, the decentralized approach taken by thedistributed monitoring system reduces the amount of data transmittedbetween the status viewing station 340 and the local monitoring andcontrol environment 330 by the monitoring and control devices 320sending the status viewing station 340 report files or condensed data ona number of the monitored network components. For example, where allmonitored network components are operating correctly, the monitoring andcontrol device 320 may send only a short message (e.g., a small amountof data) that all of the network components within a branch areoperational. This is in contrast to the prior sequential, centralizedapproach in which each monitored network component is required to senddata on status to the central server. In another example, where thenetwork components in a branch are operational, the monitoring andcontrol device may simply contact the status viewing station 340 toconfirm communicative coupling, but in this case transmitting a reportmay be unnecessary. Furthermore, data traffic from the status viewingstation 340 to the monitoring and control devices may be reduced becausethe monitoring and control devices may proactively fix problems with themonitored network components without requiring input from the statusviewing station 340. As a result, after performing the fix, themonitoring and control device 320 may report to the status viewingstation 340 that a problem was fixed, and the status viewing station 340may determine no further action is needed (e.g., may not contact themonitoring and control device) or may simply send an acknowledgement ofthe fix. This is in contrast to a central server used in the sequentialapproach, which may be required to transmit instructions to the networkcomponents to attempt a fix, wait for confirmation of the attempt andwhether it was successful or unsuccessful, potentially retry the fix orattempt a new fix and wait for confirmation.

During installation of the distributed monitoring system 300, 305, a setof centrally hosted servers (e.g., web and database servers), such asthe status viewing station 340 or another central server, may send filescontaining the monitoring software to the retail business-houseddistribution servers for installation within the monitoring and controldevices 320 and other network components. On-site monitoring and controldevices 320 within branches of the retail business may synchronize filestructures with the distribution server. In some implementations,content may be sent directly from the centrally hosted servers to thebranches of the retail business, thereby bypassing the retailbusiness-housed distribution servers. In each installation, thedistributed monitoring system may be configured to enable the statusviewing stations 320 to communicate directly or indirectly with theremote monitoring and control devices 340, and the monitoring andcontrol devices 320 locally monitor and control their respective localnetwork components. Therefore, sequential status checks performed by thestatus viewing station 340 may be unnecessary due to the on-sitemonitoring and control devices 320 performing the monitoring and controlfunctions. Furthermore, because the distributed monitoring system 300,305 checks status of the display devices 310 locally, status reports maybe continuously sent to the remote status viewing station 340 from themonitoring and control devices across the network. This may enable theremote status viewing station 340 to be updated with the status of thenetwork in real time. For example, each monitoring and control devicewithin the network may send an update every few minutes (e.g., 5minutes) so that for a 3000 branch retail business with monitoring andcontrol devices at each branch, the status viewing station 340 mayreceive 10 network status updates per second. Furthermore, the updatesand any associated alerts may be automatic, thereby removing thenecessity of manual analysis of status reports. In addition, the statusviewing station 340 may perform functions that enable the monitoring andcontrol device to automatically fix and control the display devices.

In some implementations, such as when the distributed monitoring system300, 305 is implemented in a bank setting, the remote monitoring system,e.g., status viewing station 340, may not connect directly to themonitoring and control devices 320 within the bank branches. This mayavoid problems associated with non-secure access to bank networks. Inthis case, a distribution server may be provided between the statusviewing station 340 and the monitoring and control devices 320 withinthe branches, and the status viewing station 340 may be securelyconnected to the distribution server (e.g., by secure VPN). In thisexample, the status viewing station 340 may send files to thedistribution server, which synchronizes with the monitoring and controldevice 320. As a result, the local monitoring and control environmentmay only be accessed by the bank's distribution server, and the statusviewing station 340 may only be communicatively coupled via a secureconnection to the distribution server. Furthermore, access to the statusviewing station 340 as well as access to the distribution server via thestatus viewing station 340 may be secure and only certain users may haveadministrative status with the distribution server while others aregiven only read and copy access, for example. In this example, whenalerts are generated based on parameter falling outside of predefinedranges or settings, the alerts are sent by the monitoring and controldevice 320 to the distribution server (e.g., a server controlled by theretail business) and then the distribution server sends the alert to thestatus viewing station 340 (which may be controlled by the retailbusiness or a third party).

The status viewing station 340 includes a status viewer interface 500that may be implemented by software or may be accessed by logging into awebsite. For example, as shown in FIG. 5, a login page 510 may beaccessed via a website through any status viewing station 340 coupled tothe Internet. The login page secure such as password protected to enableauthorized users to access the distributed monitoring system. Thus, intheory, the status viewing station 340 may be accessed by a PC operatingthe monitoring and control software such as for maintenance and updatingof the monitoring and control devices.

Upon accessing the status viewer interface 500, one of a number of tabsmay be selected by the user for viewing the status of various aspects ofthe monitored display devices 310 and other network components. In FIG.6, the site status tab 600 displays an overview of monitored parameters610, e.g., network health parameters, for devices or branches 615 as aseries of status indicators 620 (e.g., red, green, yellow indicators) orother warning or alert indicators (e.g., number values, star ratings,arrows or other symbols). The indicators 620 may represent that theparameter is within acceptable ranges (e.g., a green indicator), thestatus of the parameter is pending (e.g., a yellow indicator) or that aproblem with the parameter has been identified (e.g., a red indicator).Each parameter monitored within a display device or at a branch may beassociated with a status indicator 620 or each display device or branchmonitored may be associated with a status indicator 620. Thus, ashardware, firmware and software status falls outside of pre-set limits,these are reported as error conditions for the particular device or forthe branch housing the device.

FIG. 6 illustrates some examples of parameters 610 that may be monitoredfor each branch and displayed by the status viewer interface 500. Themonitored parameters 610 may be network health parameters on abranch-by-branch basis and may include: monitoring and control devicerunning status (e.g., whether the monitoring and control device softwareis running correctly); hard disk drive (HDD) space (e.g., whether thereis enough HDD space available); free RAM (e.g., whether there is enoughfree RAM); no missing files (e.g., if the monitoring and control deviceis asked to play a file that is not there, the monitoring and controldevice reports the missing file); transmission status (e.g., test filesmay be sent from a messaging manager such as from the status viewingstation 340 at a pre-determined interval; and the receipt of these filesmay be checked and if the files are older than 2 hours, an error isreported); monitor status (e.g., display device status); last reboot(e.g., whether the last scheduled reboot occurred); last report (e.g.,whether the site has reported in a specified time frame) and othernetwork component health-related parameters. In one example, when thedisplay device is not powered on during operating hours, the interface500 may display a warning status indicator for the given display deviceor for the branch at which the display device is located.

Furthermore, the site status tab 600 includes a site status summary 625providing a summary of the sites and channels within the status viewingstation 340 network. The summary may provide the total number of sitesand channels within the network and may list the number of sites andchannels operating within expected parameters (e.g., sites with noerrors), with pending parameters (e.g., sites with un-initialized orpending parameters), and those falling outside of expecting operatingparameters (e.g., sites with errors detected such as players notrunning, files missing, decoder errors, transmission errors, rebootingerrors and out-of-date report errors).

In some implementations, the user viewing the site status tab 600 mayaccess detailed data (e.g., stored in memory associated with the statusviewing station 340 or accessible via a web connection) for the hardwaredevice or software for the site device experiencing the problem throughthe status viewing interface 500. This detailed data may providespecific information on the error conditions and the type (e.g., modeland/or unique identifier) of device experiencing the problem. In somecases, a message may be associated with a persisting error condition,such as for a display device that requires manual repair. In this case,the user may access the message by selecting the indicator correspondingto the branch and device parameter affected, or by selecting otherinformation associated with the branch or display device. In addition oralternatively, the status viewing station 340 may attempt to cause thedisplay device problem to be fixed by determining the correct HEX codesfor turning on and/or rebooting the display device. The status viewingstation 340 may send updated HEX code information to the monitoring andcontrol device 320 and instruct the monitoring and control device 320 toattempt to fix the problem. If the monitoring and control device isunsuccessful in causing the display device to power on, or reboot andpower on, using the updated HEX codes, then the monitoring and controldevice 320 may return a report indicating the status viewing station 340instructions were executed but were unsuccessful. In this case, thestatus viewing station 340 may send a notification to the monitoring andcontrol device 320 or to another device indicating that the displaydevice requires manual repair. In some implementations, the notificationmay be provided in the form of a service request to a technician's PCcommunicatively coupled to the distributed monitoring system.

In FIG. 7, the channel status tab 700 may enable a user to view detailsof the network components within the branches in order to isolateproblems. For example, when a site (e.g., a branch) supports more thanone channel (e.g., more than one set of programming content transmittedby the network components to the display devices within a branch), thechannel status tab 700 may display the various channels 710 (e.g., thespecific channels in various branches) within the site and the affectedchannel may be isolated. In some implementations, the channel status tab700 may be provided in addition to or as an alternative to a devicestatus tab or a programming status tab to enable the user to view thedisplay device or the programming experiencing a problem. According toFIG. 7, parameters that may be displayed on the channel status tab 700that may be in addition to the parameters displayed in the site statustab 600 of FIG. 6 include the channel name, the internal IP addressassociated with the channel, the external IP address associated with thechannel and the last synchronization time. In addition, FIG. 7 providesa results filter 715 that enables the user to filter results byparameter type or by problem type in order to produce a list of sites orchannels with a selected parameter or problem type. This results filtermay be provided in each of the various tabs to enable filtering byparameter or problem type.

In FIG. 8, the update status tab 800 enables a user to view the statusof updates implemented across the network of monitored components. InFIG. 8, the branches and/or site identifiers may identify the monitoredbranch 810, and the status of the update of the network component withinthe branch may be tracked based on receiving reports from the monitoringand control devices 320 for player update parameters 815 including butnot limited to: synchronization start time; synchronization end time;the last synchronization time; the last successful synchronization time;whether the synchronization has started; the synchronization exit code;and the synchronization server identification. The user is thereforeable to view the status of synchronizations across the network.Synchronization monitoring also enables the business to confirm thatcontent files are correctly distributed to the monitoring and controldevices 310 within the branches supported by the business. In someimplementations, the status viewing station 340 may receive reports fromthe monitoring and control devices 320 indicating the synchronization ofcontent was unsuccessful, and in response, the status viewing station340 may automatically debug content and send the updated content to themonitoring and control device for installation and/or transmission.

In FIG. 9, the schedule information tab 900 may enable users to view acontent scheduler 910 with its associated playlists scheduled to play onthe display devices 310 across the network as well as the date theplaylists will begin to play and end playing and the days of the weekthe playlists are to be played. Specific spots within the playlists maybe viewed by the user, and in some implementations, the components thatmake up each spot may be viewed. This may enable a user to precisely andquickly ascertain the content that is playing or that is scheduled to beplayed across the network. Those skilled in the art will appreciate thelines depicted in FIGS. 6-9 represent information applicable to theoperating information and parameters associated with the distributedmonitoring system of the present disclosure.

In FIG. 10, the general information tab 1000 may enable the user toperform a network wide search of specific criteria by entering thesearch criteria in the filter field 1010.

EXAMPLE

The following example provides a representative specification outlinefor a screen monitoring application that may be implemented by thedistributed monitoring system provided according to certainimplementations. This screen monitoring application may serve as a checkapplication for a number of LCD/LED screens (e.g., display devices),which are linked to monitoring and control devices and each monitoringand control device sends data to (e.g., status checks) and receives datafrom (e.g., status reports) the display devices. The communicationbetween the monitoring and control device and its connected displaydevices may be through serial RS232 or IP port. The specificationoutline includes information specific to Samsung monitors but may beadjusted for any manufacturer's display devices.

Application Requirements:

Some requirements for the screen monitoring application may include, butare not limited to, one or more of the following: 1) console mode, wherethe EXE is run at a command prompt; 2) service mode, where the EXE isinstalled as a windows service; 3) configuration file for generalapplication settings, such as the time to pole the display devices (inseconds), folder to save the response XMLs, log mode on/off where theapplication logs its last event; 4) XML schema defining the displaydevice commands and return values; and 5) XML Schema defining the outputresponse files, which are then interpreted by the third partyapplication (status viewer). The application may run on Windows XP andabove (Vista, windows 7) or other platforms.

Outcome and Configuration Requirements:

The screen monitoring application may be configured to implement certainapplication logic and rules such as: 1) the display device monitoringmay only occur when the display devices are on, hence the time nodes; 2)interval rules may set the time in minutes between checks; 3) if thedisplay device power is returned as OFF in the status inquiry, then thescreen monitoring application will send an ON command and then retry thestatus. If the display device powers on, then no error is reported. Ifthe display device does not power on then an error is reported; 4) ifthe input source data command does not return the correct number(between 14 and 22) returned setting on the send line is sent. Thestatus should then be rechecked by the screen monitoring application andreported if still in error. This provides a check to determine if thedisplay device has a specific input source (HDMI, etc.), and if it doesnot, the screen monitoring application sends a command to set thedisplay device to the correct input source; 5) the return is what youare expecting with Display Status Control command (0, 75) being anacceptable range or a simple 1 or 0, 0 being normal. Any variation inthis causes the error flag in the data file created by the applicationto be set.

Command XML Schema:

A command XML schema defines the commands that are to be sent to eachdisplay device at specific times, and at specific intervals. Eachdisplay device can have a different set of times, as well as a differentset of commands. Each display device is referenced by a unique hexCodeand each of the codes used to operate the display device for multiplemodels of display devices may be programmed into the monitoring andcontrol device.

The schema below for display device (e.g., screen) one states thatbetween 18:00 and 20:00 on Monday to Saturday, commands 1, 2, and 3 aresent to the display device, and the return values placed in the outputXML (see below).

The interval is in minutes, and the schema example file is bundled withthis document (configuration.xml). The serial port connectionString andoutputFilePath is also given in this configuration.xml

<?xmlversion=″1.0″encoding=″utf-8″?> <Screen_Monitoring>  <Interval>  15  </Interval>  <connectionString>   <![CDATA[9600,1,0,n]]> </connectionString>  <outputFilePath><![CDATA[C:\johnryan\screenmonitor\output.xml]]>  </outputFilePath> <Screens>   <ScreenID=″1″>    <Times> <TimedayOfTheWeek=″1″startTime=″18:00″endTime=″20:00″status=″on″></Time> <TimedayOfTheWeek=″2″startTime=″18:00″endTime=″20:00″status=″on″></Time> <TimedayOfTheWeek=″3″startTime=″18:00″endTime=″20:00″status=″on″></Time> <TimedayOfTheWeek=″4″startTime=″18:00″endTime=″20:00″status=″on″></Time> <TimedayOfTheWeek=″5″startTime=″18:00″endTime=″20:00″status=″on″></Time> <TimedayOfTheWeek=″6″startTime=″18:00″endTime=″20:00″status=″on″></Time> <TimedayOfTheWeek=″7″startTime=″00:00″endTime=″24:00″status=″off″></Time>   </Times>    <Commands>     <CommandID=″1″loopTries=″1″>     <sendCommand>       <![CDATA[Display Status Control (Page18,returns Lamp error 0 or 1, Temperature 0 or 1, bright sensor 0 or 1, Nosync 0 or 1, Current temp xx, Fan error 0 or 1)]]>  </sendCommand>     <expectedReturn>       <![CDATA[Return 0,0,0,0,(0,75),0]]>     </expectedReturn>      <onErrorEvent>       <![CDATA[Report intothe output XML that an unexpected value is returned]]>     </onErrorEvent>     </Command>     <CommandID=″2″loopTries=″1″>     <sendCommand>       <![CDATA[Get On Off status (Page 22, Returns 0or 1)]]>      </sendCommand>      <expectedReturn>       <![CDATA[1]]>     </expectedReturn>      <onErrorEvent>       <![CDATA[Send the setcommand to the expected return. in effect this checks if the screen ison (1), and if not sends it a command to turn it on. If this fails(loopTries), then an error is reported in the output XML]]>     </onErrorEvent>     </Command>    <CommandID=″3″loopTries=″1″>     <sendCommand>       <![CDATA[Input source data (Page 25, returnsInput source code)]]>      </sendCommand>      <expectedReturn>      <![CDATA[14]]>      </expectedReturn>      <onErrorEvent>      <![CDATA[Send the set command to the expected return (14). ineffect this checks if the screen input is 14 (HDMI) and if it is notthen it sends a command to set it to 14 (HDMI). If this fails(loopTries), then an error is reported in the output XML]]>     </onErrorEvent>     </Command>    </Commands>   </Screen>  <ScreenID=″2″>    <Times><TimedayOfTheWeek=″1″startTime=″09:00″endTime=″18:00″status=″on″></Time><TimedayOfTheWeek=″2″startTime=″09:00″endTime=″18:00″status=″on″></Time><TimedayOfTheWeek=″3″startTime=″09:00″endTime=″18:00″status=″on″></Time><TimedayOfTheWeek=″4″startTime=″09:00″endTime=″18:00″status=″on″></Time><TimedayOfTheWeek=″5″startTime=″09:00″endTime=″18:00″status=″on″></Time><TimedayOfTheWeek=″6″startTime=″09:00″endTime=″18:00″status=″on″></Time><TimedayOfTheWeek=″7″startTime=″00:00″endTime=″24:00″status=″off″></Time>   </Times>    <Commands>     <CommandID=″1″loopTries=″1″>     <sendCommand>       <![CDATA[Display Status Control (Page18,returns Lamp error 0 or 1, Temperature 0 or 1, bright sensor 0 or 1, Nosync 0 or 1, Current temp xx, Fan error 0 or 1)]]>      </sendCommand>     <expectedReturn>       <![CDATA[Return 0,0,0,0,(0,75),0]]>     </expectedReturn>      <onErrorEvent>       <![CDATA[Report intothe output XML that an unexpected value is returned]]>     </onErrorEvent>     </Command>   <CommandID=″2″loopTries=″1″>     <sendCommand>       <![CDATA[Get On Off status (Page 22, Returns 0or 1)]]>      </sendCommand>      <expectedReturn>       <![CDATA[1]]>     </expectedReturn>      <onErrorEvent> <![CDATA[Send the set commandto the expected return. in effect this checks if the screen is on (1),and if not sends it a command to turn it on. If this fails (loopTries),then an error is reported in the output XML]]>      </onErrorEvent>    </Command>     <CommandID=″3″loopTries=″1″>      <sendCommand>      <![CDATA[Input source data (Page 25, returns Input source code)]]>     </sendCommand>      <expectedReturn>       <![CDATA[14]]>     </expectedReturn>      <onErrorEvent>        <![CDATA[Send the setcommand to the expected return (14). in effect this checks if the screeninput is 14 (HDMI) and if it is not then it sends a command to set it to14 (HDMI). If this fails (loopTries), then an error is reported in theoutput XML]]>      </onErrorEvent>     </Command>    </Commands>  </Screen>  </Screens> </Screen_Monitoring>

Hex Commands:

The commands contained in the sendCommand node as well as anyexpectedReturn nodes may be in hex format. Some examples (using aSamsung screen as reference) are:

Status sendCommandstatus_(—)00.hex: AA 20 20 20 20Status sendCommand status_(—)01.hex: AA 20 01 20 01Status sendCommandDisplay status_(—)01.hex: AA OD 01 20 0EOn/Off sendCommandPowerOFF_(—)00.hex: 3F 41 3FInput Source sendCommand PCinput_(—)02.hex: AA 14 02 01 14 2B

Output XML Schema:

The commands are run per display device as defined above, at set timesof the day. If any errors are reported (as in after the onErrorEvent hasbeen executed and tested, the system still does not return(expectedReturn) then an XML file is written out to a directory given inthe configuration file for the application. This output XML file, takesthe form:

<?xmlversion=″1.0″encoding=″utf-8″?> <Screens screenErrors=″1,2″> <ScreenID=″1″?   <!--the lamp, temperature, bright sensor, no sync,current temperature, fan error codes come from the Display StatusControl command -->   <Lamp>    <![CDATA[0]]>   </Lamp>  <currentTemperatureError>    <![CDATA[0]]>  </currentTemperatureError>   <BrightSensor>    <![CDATA[0]]>  </BrightSensor>  <noSync>    <![CDATA[0]]>   </noSync>  <currentTemperatureValue>    <![CDATA[56]]>  </currentTemperatureValue>   <Fan>    <![CDATA[0]]>   </Fan>  <!--power on/off comes from get on/off status-->   <Power>   <![CDATA[1]]>   </Power>   <!--input source comes from the inputsource command-->   <inputSource>    <![CDATA[14]]>   </inputSource> </Screen>  <ScreenID=″2″>   <!--the lamp, temperature, bright sensor,no sync, current temperature, fan error codes come from the DisplayStatus Control command -->   <Lamp>    <![CDATA[0]]>  </Lamp>  <currentTemperatureError>    <![CDATA[0]]>  </currentTemperatureError>   <BrightSensor>    <![CDATA[0]]>  </BrightSensor>   <noSync>    <![CDATA[0]]>   </noSync>  <currentTemperatureValue>    <![CDATA[56]]>  </currentTemperatureValue>   <Fan>    <![CDATA[0]]>   </Fan>  <!--power on/off comes from geton/off status-->   <Power>   <![CDATA[1]]>   </Power>   <!--input source comes from the inputsource command-->   <inputSource>    <![CDATA[14]]>   </inputSource> </Screen> </Screens>

This schema example is bundled with this document (output.xml). Thefilename and path of this output file should be given in the applicationconfiguration file.

The screen Error attribute to the Screens node is a comma delimited listof any display device ID's which have an error. If any (even if it'sjust one of the items) of the information in the <screen> node such aslamp, bright sensor etc. are in error (as in value 1 as opposed to 0),then this flags this display device as having an error, and thereforethe screen Error attribute of the <screens> node should be populatedwith the display device ID or ID's.

Status Viewer:

A central website may show the health status of site monitoring andcontrol device's software and associated hardware devices. The health ofeach element is displayed as an indicator such as a green, yellow or redlight. The associated site and sub zone information may be linked toeach element. The output.xml file is reported back to the centralwebsite to allow instantaneous viewing of the display device health andother hardware and software information across the network, as each sitemachine will be sending the health information back continuously. If asite's display devices have an error, then the indicator on the centralweb site will turn from a green light to red. When this light is clickedthe data from the output xml file may be read.

Aspects of the implementations may be provided as a computer programproduct, or software, that may include a non-transitory machine-readablemedium having stored thereon instructions used to program a computersystem (or other electronic devices) to perform a process or both. Anon-transitory machine-readable medium includes any mechanism forstoring information in a form (e.g., software, processing application)readable by a machine (e.g., a computer). The non-transitorymachine-readable medium may take the form of, but is not limited to, amagnetic storage medium (e.g., floppy diskette, video cassette, and soon); optical storage medium (e.g., CD-ROM); magneto-optical storagemedium; read only memory (ROM); random access memory (RAM); erasableprogrammable memory (e.g., EPROM and EEPROM); flash memory; and so on.

The present disclosure and many of its attendant advantages may beunderstood by from the foregoing description, and it will be apparentthat various changes may be made in the form, construction andarrangement of the components without departing from the disclosedsubject matter or without sacrificing all of its material advantages.The form described is merely explanatory, and it is the intention of thefollowing claims to encompass and include such changes. For example, thescreen monitoring application described in the example above is notlimited to code for executing queries and receiving responses fromdisplay devices, and may additionally be utilized for monitoring othernetwork components within the distributed monitoring system. Inaddition, while the distributed monitoring system is described as havingone status viewing station 340, it will be appreciated that multiplestatus viewing stations may be utilized. Moreover, the monitoring andcontrol devices may report to multiple status viewing stations ordistribution servers.

While the present disclosure has been described with reference tovarious embodiments, it will be understood that these embodiments areillustrative and that the scope of the disclosure is not limited tothem. Many variations, modifications, additions, and improvements arepossible. Functionality may be separated or combined in blocksdifferently in various embodiments of the disclosure or described withdifferent terminology. These and other variations, modifications,additions, and improvements may fall within the scope of the disclosureas defined in the claims that follow.

What is claimed is:
 1. A digital signage network configured with adistributed monitoring system for monitoring and controlling networkcomponents, the digital signage network comprising: a plurality of localmonitoring and control environments comprising a content playerconfigured to transmit content to display devices within the localmonitoring and control environment and a monitoring and control device,wherein the monitoring and control device is configured to: detect anoperational status of the content player and the display devices;assemble a report of the operational status for the local monitoring andcontrol environment using on the detected information; and transmit theoperational status report; and a status viewing station remotely locatedfrom the local monitoring and control environments, wherein the statusviewing station comprises a processor configured to: receive thetransmitted operational status reports from each local monitoring andcontrol environment; and generate a display listing an operationalstatus of each local monitoring and control environment based on theplurality of reports received.
 2. The system of claim 1, wherein thestatus viewing station processor is further configured to: identifyoperating errors for one or more of the local monitoring and controlenvironments using the transmitted operational status reports; andtransmit instructions to one or more of the monitoring and controldevices associated with at least one of the one or more local monitoringand control environments having the identified operating errors.
 3. Thesystem of claim 2, wherein at least one of the one or more monitoringand control devices is further configured to: transmit an indication tothe status viewing station that the instructions were successful orunsuccessful.
 4. The system of claim 1, wherein the status viewingstation processor is further configured to transmit updated content toat least one monitoring and control device in response to receiving theoperational status reports.
 5. The system of claim 1, wherein thecontent player is configured to store content for multiple channels, andwherein the operational status report comprises information about anoperational status of the content for each of the multiple channels. 6.The system of claim 5, wherein the status viewing station processor isconfigured to transmit updated content and playlist schedules forupdating the stored content associated with the multiple channels. 7.The system of claim 1, wherein at least one of the display devices of atleast one of the monitoring and control environments houses themonitoring and control device of the at least one of the monitoring andcontrol environments.
 8. The system of claim 7, wherein the housedmonitoring and control device is configured as the content player. 9.The system of claim 1, wherein at least one monitoring and controldevice is configured as the content player.
 10. The system of claim 1,wherein at least one of the display devices and at least one monitoringand control device are arranged within the same building.
 11. The systemof claim 1, wherein the status viewing station processor is furtherconfigured to send at least one monitoring and control device at leastone update for updating a configuration of one or more display devices.12. The system of claim 1, wherein the at least one monitoring andcontrol device is further configured to detect a status of aninstallation of the at least one update on the one or more displaydevices and transmit a report of the status of the installation of theat least one update to the status viewing station.
 13. The system ofclaim 1, wherein the digital signage network operates on a securenetwork and each local monitoring and control environment furthercomprises a secure distribution server, wherein the secure distributionserver receives the transmitted operational status report and deliversthe operational status report to the status viewing station.
 14. Thesystem of claim 1, wherein the status viewing station does not performsequential status checks of the remote monitoring and controlenvironments.
 15. The system of claim 1, wherein the operational statusof one or more of the content player or the display devices is detectedin response to the monitoring and control device sending a status query.16. The system of claim 1, wherein the operational status of one or moreof the content player or the display devices is detected in response tothe content player or the display devices sending a scheduled statusupdate.
 17. A system for monitoring and controlling components of adigital signage network, the system comprising: a status viewing stationcomprising a processor configured to: receive transmitted operationalstatus reports from each of a plurality of remote monitoring and controlenvironments, each operational status report comprising an operationalstatus for a plurality of display devices of the respective remotemonitoring and control environment; and generate a display listing anoperational status for each remote monitoring and control environmentusing the plurality of reports received.
 18. The system of claim 17,wherein the status viewing station processor is further configured totransmit updated content and playlist schedules for updating storedcontent associated with multiple channels for display on at least one ofthe plurality of display devices of at least one remote monitoring andcontrol environment.
 19. The system of claim 17, wherein the statusviewing station is further configured to: identify operating errors forat least one of the remote monitoring and control environments based ona respective operational status report for the at least one remotemonitoring and control environment; and transmit instructions to amonitoring and control device associated with the remote monitoring andcontrol environment having the identified operating errors.
 20. Thesystem of claim 17, wherein the status viewing station is not configuredto perform sequential status checks of the remote monitoring and controlenvironments.